/**
 * This file is Copyright © 2008 Software Craftsmen Limited. All Rights Reserved.
 */
package com.softwarecraftsmen.collections;

import org.jetbrains.annotations.NotNull;

public interface Sequence<K, V, Z> extends Collection<K>, LegacySequenceConversions<V>
{
	@NotNull
	V valueAt(final K key);

	/*
	void each(final @NotNull UnaryFunctor<V> closure);

	// Consider switching to using a super-iterator as the returned type...
	@NotNull
	Z where(final @NotNull UnaryReturningFunctor<V, com.softwarecraftsmen.functors.Boolean> selector);

	//Z whereNot(final @NotNull UnaryReturningFunctor<V, com.softwarecraftsmen.functors.Boolean> selector);
*/

	/*

http://openbookproject.net//thinkCSpy/ch09.xhtml#auto5 for python examples
a_list = ['a', 'b', 'c', 'd', 'e', 'f']

a_list[:]
['a', 'b', 'c', 'd', 'e', 'f']

	@NotNull
	Sequence<K, V> slice();

a_list[1:3]
['b', 'c']

	@NotNull
	Sequence<K, V> slice(final int fromIndex, final int toExcludingIndex);

a_list[:4]
['a', 'b', 'c', 'd']

	@NotNull
	Sequence<K, V> sliceTo(final int toExcludingIndex);

a_list[3:]
['d', 'e', 'f']

	@NotNull
	Sequence<K, V> sliceFrom(final int fromIndex);
	*/
}
